// UVa10375 Choose and divide
// 刘汝佳
#include <cstdio>
#include <cmath>
#include <iostream>
#include <vector>
using namespace std;

const int NN = 10000;
vector<int> primes;
int E[NN];
// 乘以或除以n. d=0表示乘，d=-1表示除
void add_integer(int n, int d) {
  for (size_t i = 0; n > 1 && i < primes.size(); i++) {
    while (n % primes[i] == 0)
      n /= primes[i], E[i] += d;
    // if (n == 1) break;  // 提前终止循环，节约时间
  }
}

void add_factorial(int n, int d) { // 阶乘中的每一个数字计入计算结果
  for (int i = 1; i <= n; i++) add_integer(i, d);
}

bool is_prime(int n) {
  int m = floor(sqrt(n) + 0.5);
  for (int a = 2; a <= m; a++)
    if (n % a == 0) return false;
  return true;
}

int main() {
  for (int i = 2; i <= NN; i++)
    if (is_prime(i)) primes.push_back(i);
  ios::sync_with_stdio(false), cin.tie(0);
  for (int p, q, r, s; cin >> p >> q >> r >> s;) {
    fill_n(E, NN, 0);
    add_factorial(p, 1), add_factorial(q, -1), add_factorial(p - q, -1);
    add_factorial(r, -1), add_factorial(s, 1), add_factorial(r - s, 1);
    double ans = 1;
    for (size_t i = 0; i < primes.size(); i++) ans *= pow(primes[i], E[i]);
    printf("%.5lf\n", ans);
  }
  return 0;
}
/*
算法分析请参考: 《入门经典-第2版》例题 10-3
*/
// Accepted 240ms 1128 C++5.3.0 2020-12-09 16:27:12 25828497
